#include "vec3f.h"
#include <iostream>


#ifdef _MAC_OS_
#include <GLUT/glut.h>
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#endifx2


/*vec3f::vec3f(float f){
setX(f);
setY(f);
setZ(f);
}*/

float*
vec3f::data(){
  return _data;
}

vec3f::vec3f(float x, float y, float z){
  _x = x;
  _y = y;
  _z = z;
}

vec3f::vec3f(float cte){
  _x = cte;
  _y = cte;
  _z = cte;
}

vec3f::vec3f(const vec3f &s){
  _x = s._x;
  _y = s._y;
  _z = s._z;
}



const float& vec3f::getX() const{
  return _data[0];
}
const float& vec3f::getY() const{
  return _data[1];
}
const float& vec3f::getZ() const{
  return _data[2];
}

void vec3f::setX(float f){
  _data[0]=f;
}
void vec3f::setY(float f){
  _data[1]=f;
}
void vec3f::setZ(float f){
  _data[2]=f;
}


vec3f operator+(const vec3f& a){
  _x = a._x + b._x;
  _y = a._y + b._y;
  _z = a._z + b._z;
}

vec3f operator*(const vec3f& a){
  result.x()=this->getx()*a;
  result.y()=this->gety()*a;
  result.z()=this->getz()*a;  
  return result;
 

}
vec3f operator-(const vec3f& a){
  result.x()=this->getX()-a;
  result.y()=this->getY()-a;
  result.z()=this->getZ()-a;  
  return result;
}
vec3f operator/(float a){
  result.x()=this->getX()/a;
  result.y()=this->getY()/a;
  result.z()=this->getZ()/a;  
  return result;
}

const float operator[](int a) const{
  return _data[a];
}
